/* -------------------------------------------------------------------------- *
   TestWinUnit - Maria Blees (maria.blees@microsoft.com)

   File: MockLogger.h
   This file/class are used in place of a "real" logger class in tests of
   classes/methods that require a logger.
 * -------------------------------------------------------------------------- */
#pragma once
#include "Logger.h"

class MockLogger : public WinUnitLib::Logger
{
public:
    unsigned int Verbosity;
    int OutputTestExecutableNamePreTestCalled;
    int OutputTestExecutableNamePostTestCalled;
    int OutputTestNamePreTestCalled;
    int OutputTestNamePostTestCalled;
    int OutputTraceCalled;
    int OutputTestErrorCalled;
    wchar_t OutputTestError_message[1024];
    int OutputProgramErrorLineCalled;
    wchar_t OutputProgramErrorLine_msg1[1024];
    int OutputFinalResultsCalled;
public:
    MockLogger();
public:
    virtual void OutputTestExecutableNamePreTest(
        const wchar_t* /* fullPath */, 
        const wchar_t* /* nameOfExecutable */);

    virtual void OutputTestExecutableNamePostTest(
        const wchar_t* /* fullPath */, 
        const wchar_t* /* nameOfExecutable */, 
        unsigned int /* succeeded */, 
        unsigned int /* totalRun */);

    virtual void OutputTestNamePreTest(const char* /* testName */);

    virtual void OutputTestNamePostTest(
        const char* /* testName */, 
        bool /* passed */);

    virtual void OutputTrace(const wchar_t* /* message */);

    virtual void OutputTestError(const wchar_t* /* message */);

    virtual void OutputProgramErrorLine(
        const wchar_t* /* msg1 */,
        const wchar_t* /* msg2 */ = 0,
        const wchar_t* /* msg3 */ = 0,
        const wchar_t* /* msg4 */ = 0);

    virtual void OutputFinalResults(
        unsigned int /* succeeded */, 
        unsigned int /* totalRun */);

    virtual void SetVerbosity(unsigned int);
};
